package JUC.第01章_前置知识;

import java.util.concurrent.TimeUnit;

/**
 * 线程的分类
 * Java中的线程分为两类:一种是守护线程，一种是用户线程。
 * ●它们在几乎每个方面都是相同的，唯一的区别是判断JVM何时离
 * ●守护线程是用来服务用户线程的，通过在start()方法前调用
 * thread.setDaemon(true)可以把一个用户线程变成一个守护线程
 * ●Java垃圾回收就是一个典型的守护线程。
 * ●若JVM中都是守护线程，当前JVM将退出。
 * ●形象理解:兔死狗烹，鸟尽弓藏
 */
public class F_线程分类 {
    public static void main(String[] args) {
        Thread thread = new Thread(() -> {
            System.out.println(Thread.currentThread().getName() + "\t本线程为："
                    + (Thread.currentThread().isDaemon() ? "守护线程" : "用户线程"));
            try {
                TimeUnit.SECONDS.sleep(10);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }, "A");
        thread.setDaemon(true);//设置线程为守护线程 必须在运行前 设置线程类型
        thread.start();
        try {
            TimeUnit.SECONDS.sleep(2);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println(Thread.currentThread().getName() + "\t线程结束");
    }
}
